require "base_def"
local hand_user_info = require "hand_user_info"

local redis_manager = {}

--消息分发（单节点和集群都找该管理服务首先查到对应的查询函数所在文件[为了服务模块化]）
function redis_manager:DispatchMsg(cmd, ...)
    --[[
    if self.hand_redis_connect[cmd] then 
        return self.hand_redis_connect[cmd](self.hand_redis_connect, ...)
    elseif hand_user_info[cmd] then
        return hand_user_info[cmd](...)
    end
    --]]
    if hand_user_info[cmd] then
        return hand_user_info[cmd](...)
    else
        log.error("redis_manager:DispatchMsg error cmd=", cmd)
    end
end

function redis_manager:Init()
    log.info("---------------------redis_manager init---------------------")
    --管理节点ID
    self.node = g_manager_node.redis
    skynet.register(".redis")
    --集群模式下才需要redis节点管理服务
    if FRAME_CALL_TYPE==__CALL_TYPE_CLUSTER__ then
        cluster.open "redis"
    end
    
    --self.hand_redis_connect = require "hand_redis_connect"
    --self.hand_redis_connect:Init()

    --redis库查询工具服务
    self.redisTool = skynet.uniqueservice("redis_tools")
end

skynet.start(function()
    skynet.dispatch("lua", function(session, address, cmd, ...)
        local f = redis_manager["DispatchMsg"]
        if f then
            skynet.ret(skynet.pack(f(redis_manager, cmd, ...)))
        else
            skynet.error(string.format("Unknown command %s", tostring(cmd)))
        end
    end)

    redis_manager:Init()
end)

return redis_manager
